type Obj = {
  [key: string]: string[];
};

const MediaExtFormat: Obj = {
  image: ['jpg', 'png', 'gif'],
  video: ['mp4'],
};

/**
 * 根据文件名获取文件后缀名（扩展名）
 * @param filename 文件名
 */
export const getFileExt = (filename: string) => {
  const ext = filename.split('.').pop();
  return ext ? ext.toLowerCase() : '';
};

/**
 * 根据文件名获取文件类型
 * @param filename 文件名
 */
export const getFileType = (filename: string) => {
  const ext = getFileExt(filename);
  let fileType = '';
  top: for (let key in MediaExtFormat) {
    for (let i = 0; i < MediaExtFormat[key].length; i++) {
      if (ext == MediaExtFormat[key][i]) {
        fileType = key;
        break top;
      }
    }
  }
  return fileType;
};

/**
 * base64转File
 * @param base64 base64文件
 * @param filename 文件名
 * @returns
 */
export const base64ToFile = (base64: string, filename: string) => {
  var arr: any = base64.split(','),
    mime = arr[0].match(/:(.*?);/)[1],
    bstr = atob(arr[1]),
    n = bstr.length,
    u8arr = new Uint8Array(n);
  while (n--) {
    u8arr[n] = bstr.charCodeAt(n);
  }
  return new File([u8arr], filename, { type: mime });
};
